/*
 * Copyright 2020 eBlocker Open Source UG (haftungsbeschraenkt)
 *
 * Licensed under the EUPL, Version 1.2 or - as soon they will be
 * approved by the European Commission - subsequent versions of the EUPL
 * (the "License"); You may not use this work except in compliance with
 * the License. You may obtain a copy of the License at:
 *
 *   https://joinup.ec.europa.eu/page/eupl-text-11-12
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
 * implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */
export default function RedirectService(logger, $window, $location, $http) {
    'ngInject';
    'use strict';

    const PATH = '/controlbar/console/ip';

    let consoleUrl;

    function prepare() {
        return $http.get(PATH, {
            headers: {
                Scheme: $window.location.protocol
            }
        }).then(function(response) {
                if (angular.isDefined(response) && angular.isString(response.data)) {
                    consoleUrl = response.data;
                    return consoleUrl;
                }
            }, function(response) {
                logger.error('Error while getting server url ', response);
            }
        );
    }

    function toConsole(openInCurrentTab, path) {
        const url = consoleUrl + (angular.isString(path) ? path : '');
        if (openInCurrentTab) {
            $window.location.href = url;
            $location.replace();
        } else {
            $window.open(url, 'eblocker.console');
        }
    }

    return {
        prepare: prepare,
        toConsole: toConsole
    };
}
